overlay: factor out gtk_overlay_get_main_widget_allocation
authorCosimo Cecchi <cosimoc@gnome.org>
Wed, 29 Feb 2012 17:20:25 +0000 (12:20 -0500)
committerCosimo Cecchi <cosimoc@gnome.org>
Wed, 29 Feb 2012 17:26:00 +0000 (12:26 -0500)
This will be used later in a subsequent commit.

gtk/gtkoverlay.c

index 66fc9ee90f8af29b87492abe70ebc70ca7272b99..331d9ee60063587edd45d55868947a4a94befbfd 100644 (file)
@@ -113,6 +113,41 @@ gtk_overlay_create_child_window (GtkOverlay *overlay,
   return window;
 }
 
+static void
+gtk_overlay_get_main_widget_allocation (GtkOverlay *overlay,
+                                        GtkAllocation *main_alloc_out)
+{
+  GtkWidget *main_widget;
+  GtkAllocation main_alloc;
+
+  main_widget = gtk_bin_get_child (GTK_BIN (overlay));
+
+  /* special-case scrolled windows */
+  if (GTK_IS_SCROLLED_WINDOW (main_widget))
+    {
+      GtkWidget *grandchild;
+      gint x, y;
+
+      grandchild = gtk_bin_get_child (GTK_BIN (main_widget));
+      res = gtk_widget_translate_coordinates (grandchild, main_widget, 0, 0, &x, &y);
+
+      main_alloc.x = x;
+      main_alloc.y = y;
+      main_alloc.width = gtk_widget_get_allocated_width (grandchild);
+      main_alloc.height = gtk_widget_get_allocated_height (grandchild);
+    }
+  else
+    {
+      main_alloc.x = 0;
+      main_alloc.y = 0;
+      main_alloc.width = gtk_widget_get_allocated_width (main_widget);
+      main_alloc.height = gtk_widget_get_allocated_height (main_widget);
+    }
+
+  if (main_alloc_out)
+    *main_alloc_out = main_alloc;
+}
+
 static void
 gtk_overlay_child_allocate (GtkOverlay      *overlay,
                             GtkOverlayChild *child)
@@ -247,36 +282,12 @@ gtk_overlay_get_child_position (GtkOverlay    *overlay,
                                 GtkWidget     *widget,
                                 GtkAllocation *alloc)
 {
-  GtkWidget *main_widget;
   GtkAllocation main_alloc;
   GtkRequisition req;
   GtkAlign halign;
   GtkTextDirection direction;
 
-  main_widget = gtk_bin_get_child (GTK_BIN (overlay));
-
-  /* special-case scrolled windows */
-  if (GTK_IS_SCROLLED_WINDOW (main_widget))
-    {
-      GtkWidget *grandchild;
-      gint x, y;
-
-      grandchild = gtk_bin_get_child (GTK_BIN (main_widget));
-      gtk_widget_translate_coordinates (grandchild, main_widget, 0, 0, &x, &y);
-
-      main_alloc.x = x;
-      main_alloc.y = y;
-      main_alloc.width = gtk_widget_get_allocated_width (grandchild);
-      main_alloc.height = gtk_widget_get_allocated_height (grandchild);
-    }
-  else
-    {
-      main_alloc.x = 0;
-      main_alloc.y = 0;
-      main_alloc.width = gtk_widget_get_allocated_width (main_widget);
-      main_alloc.height = gtk_widget_get_allocated_height (main_widget);
-    }
-
+  gtk_overlay_get_main_widget_allocation (overlay, &main_alloc);
   gtk_widget_get_preferred_size (widget, NULL, &req);
 
   alloc->x = main_alloc.x;